package cn.itsource.abstractclass;

/**
 *	抽象：
 *		1. 抽象方法：就是没有方法体的，并且用abstract修饰符修饰的方法，在形参后面用;结束
 *
 *		2. 抽象类：
 *				就是用来装抽象方法的一个类，用abstract修饰符修饰的类
 *
 *		3. 作用：
 *				用了强制子类重写方法，保证业务逻辑的合理性
 *		4. 使用：
 *				抽象类语法：
 *					public abstract class 抽象类名{
 *						1.实例变量
 *						2.类变量
 *						3.构造方法//构造方法作用就是通过子类中调用super()初始化成员变量的。但是抽象类不能创建对象
 *						
 *						抽象方法：语法
 *						修饰符 abstract 返回值类型 方法名(...);
 *							1.1.使用abstract 修饰的方法就是抽象方法
							1.2.没有方法主体，使用;结束
							1.3.抽象方法必须存于抽象类中（接口也可以），不能够放在普通类中
							1.4.抽象类的普通子类中必须覆写父类中的所有的抽象方法，（或者子类也是抽象类）
				 			使用场景：当每一个子类该方法的实现业务都不相同，为了避免业务错误，必须强制要求子类重写该方法，就需要将该方法声明为抽象方法
 *					}
 *
 *		5. 注意事项：
 *				抽象类不能new对象（语法规定）
 *
 *		6. 使用场景：
 *				抽象类一般是作为业务基类，如模板方法设计模式中就是使用抽象类。考试案例图
 *				或者需要每一个子类根据自己的实际业务重写一个方法的时候，也要将该类定义为抽象类
 *
 *	图形类
 */
public abstract class Graph {
	/**
	 * 求面积方法
	 * 
	 * 因为要求子类强制性根据自己特有的业务重写该方法，所以要声明抽象方法
	 * @return
	 
	public double getArea() {
		return 1.0;
	}
	*/
	
	/**
	 * 抽象方法
	 * @return
	 */
	public abstract double getArea();
}
